package com.monitor.search;

import com.monitor.model.Wechat;
import com.monitor.pubInter.BaseSearch;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;
/**
*   @author afeng
*   @Date 2025-03-17 10:50:14
*   @description WechatSearch      微信好友/群
*/


@Data
@ApiModel("微信好友/群WechatSearch")
public abstract class WechatSearch<Sub extends WechatSearch<Sub>> extends BaseSearch {
    @ApiModelProperty(value = "主键")
    private List idIn;
    @ApiModelProperty(value = "大于排序")
    private Integer sortNumGreater;
    @ApiModelProperty(value = "小于排序")
    private Integer sortNumLess;
    @ApiModelProperty(value = "是否显示 1:是:Y,0:否:N")
    private List showFlagIn;
    @ApiModelProperty(value = "是否删除 1:删除:Y,0:正常:N")
    private Integer delFlagEq=0;
    @ApiModelProperty(value = "好友微信id或群id")
    private String ykIdLike;
    @ApiModelProperty(value = "好友微信号")
    private String aliasLike;
    @ApiModelProperty(value = "微信好友昵称或群昵称")
    private String nameLike;
    @ApiModelProperty(value = "微信好友备注或群备注")
    private String remarkLike;
    @ApiModelProperty(value = "大于1:好友 2:群")
    private Integer typeGreater;
    @ApiModelProperty(value = "小于1:好友 2:群")
    private Integer typeLess;
    @ApiModelProperty(value = "添加好友方式")
    private String fromTypeLike;
    @ApiModelProperty(value = "头像url")
    private String headUrlLike;
    @ApiModelProperty(value = "好友微信手机号")
    private String phoneLike;
    @ApiModelProperty(value = "微信好友标签，多个标签逗号分隔 ")
    private String labelLike;
    @ApiModelProperty(value = "大于微信好友性别（1男 2女）")
    private Integer genderGreater;
    @ApiModelProperty(value = "小于微信好友性别（1男 2女）")
    private Integer genderLess;
    @ApiModelProperty(value = "微信好友地区 ")
    private String regionLike;
    @ApiModelProperty(value = "群主微信号，type=2查询群聊时返回")
    private String ownerWchatIdLike;
    @ApiModelProperty(value = "用户微信id")
    private String salesWechatIdLike;
    @ApiModelProperty(value = "大于0未删除 1已删除(只适用于好友)  ")
    private Integer deleteGreater;
    @ApiModelProperty(value = "小于0未删除 1已删除(只适用于好友)  ")
    private Integer deleteLess;
    @ApiModelProperty(value = "开始实际添加好友的时间（非必须返回）")
    private Date addTimeStart;
    @ApiModelProperty(value = "结束实际添加好友的时间（非必须返回）")
    private Date addTimeEnd;

    public WechatSearch() {
        setDelFlagEq(0);
    }



    /**
    * 返回子类Sub
    * @return
    */
    public abstract Sub getSubThis();

    @Override
    public String createTimeFiled() {
        return Wechat.CREATE_TIME;
    }
    @Override
    public String updateTimeFiled() {
        return Wechat.UPDATE_TIME;
    }
    @Override
    public String  setDefaultField() {
        return Wechat.CREATE_TIME;
    }
    @Override
    public String pkField() {
        return Wechat.ID;
    }

    @Override
    public String  toString() {
        return "WechatSearch{}"+super.toString();
    }
    public Sub setIdIn(List idIn){
        this.idIn = idIn;
        setInField(Wechat.ID, idIn);
        return getSubThis();
    }
    public Sub setSortNumGreater(Integer sortNumGreater){
        this.sortNumGreater = sortNumGreater;
        setGreaterField(Wechat.SORT_NUM, sortNumGreater);
        return getSubThis();
    }
    public Sub setSortNumLess(Integer sortNumLess){
        this.sortNumLess = sortNumLess;
        setLessField(Wechat.SORT_NUM, sortNumLess);
        return getSubThis();
    }
    public Sub setShowFlagIn(List showFlagIn){
        this.showFlagIn = showFlagIn;
        setInField(Wechat.SHOW_FLAG, showFlagIn);
        return getSubThis();
    }
    public Sub setDelFlagEq(Integer delFlagEq){
        this.delFlagEq = delFlagEq;
        setEqualField(Wechat.DEL_FLAG, String.valueOf(delFlagEq));
        return getSubThis();
    }
    public Sub setYkIdLike(String ykIdLike){
        this.ykIdLike = ykIdLike;
        setLikeField(Wechat.YK_ID, ykIdLike);
        return getSubThis();
    }
    public Sub setAliasLike(String aliasLike){
        this.aliasLike = aliasLike;
        setLikeField(Wechat.ALIAS, aliasLike);
        return getSubThis();
    }
    public Sub setNameLike(String nameLike){
        this.nameLike = nameLike;
        setLikeField(Wechat.NAME, nameLike);
        return getSubThis();
    }
    public Sub setRemarkLike(String remarkLike){
        this.remarkLike = remarkLike;
        setLikeField(Wechat.REMARK, remarkLike);
        return getSubThis();
    }
    public Sub setTypeGreater(Integer typeGreater){
        this.typeGreater = typeGreater;
        setGreaterField(Wechat.TYPE, typeGreater);
        return getSubThis();
    }
    public Sub setTypeLess(Integer typeLess){
        this.typeLess = typeLess;
        setLessField(Wechat.TYPE, typeLess);
        return getSubThis();
    }
    public Sub setFromTypeLike(String fromTypeLike){
        this.fromTypeLike = fromTypeLike;
        setLikeField(Wechat.FROM_TYPE, fromTypeLike);
        return getSubThis();
    }
    public Sub setHeadUrlLike(String headUrlLike){
        this.headUrlLike = headUrlLike;
        setLikeField(Wechat.HEAD_URL, headUrlLike);
        return getSubThis();
    }
    public Sub setPhoneLike(String phoneLike){
        this.phoneLike = phoneLike;
        setLikeField(Wechat.PHONE, phoneLike);
        return getSubThis();
    }
    public Sub setLabelLike(String labelLike){
        this.labelLike = labelLike;
        setLikeField(Wechat.LABEL, labelLike);
        return getSubThis();
    }
    public Sub setGenderGreater(Integer genderGreater){
        this.genderGreater = genderGreater;
        setGreaterField(Wechat.GENDER, genderGreater);
        return getSubThis();
    }
    public Sub setGenderLess(Integer genderLess){
        this.genderLess = genderLess;
        setLessField(Wechat.GENDER, genderLess);
        return getSubThis();
    }
    public Sub setRegionLike(String regionLike){
        this.regionLike = regionLike;
        setLikeField(Wechat.REGION, regionLike);
        return getSubThis();
    }
    public Sub setOwnerWchatIdLike(String ownerWchatIdLike){
        this.ownerWchatIdLike = ownerWchatIdLike;
        setLikeField(Wechat.OWNER_WCHAT_ID, ownerWchatIdLike);
        return getSubThis();
    }
    public Sub setSalesWechatIdLike(String salesWechatIdLike){
        this.salesWechatIdLike = salesWechatIdLike;
        setLikeField(Wechat.SALES_WECHAT_ID, salesWechatIdLike);
        return getSubThis();
    }
    public Sub setDeleteGreater(Integer deleteGreater){
        this.deleteGreater = deleteGreater;
        setGreaterField(Wechat.DELETE, deleteGreater);
        return getSubThis();
    }
    public Sub setDeleteLess(Integer deleteLess){
        this.deleteLess = deleteLess;
        setLessField(Wechat.DELETE, deleteLess);
        return getSubThis();
    }
    public Sub setAddTimeStart(Date addTimeStart){
        this.addTimeStart = addTimeStart;
        setDateStartField(Wechat.ADD_TIME, addTimeStart);
        return getSubThis();
    }
    public Sub setAddTimeEnd(Date addTimeEnd){
        this.addTimeEnd = addTimeEnd;
        setDateEndField(Wechat.ADD_TIME, addTimeEnd);
        return getSubThis();
    }
}